package global

import (
	"flag"
	"fmt"
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"go.etcd.io/etcd/clientv3"
	"time"
)

var (
	config      = flag.String("config", "config", "配置文件名称，默认我 config")
	EtcdCli     *clientv3.Client
)

// 初始化读取配置文件的配置 viper
func InitViper() {
	viper.SetConfigName(*config)     // 配置文件的名称
	viper.SetConfigType("toml")      // 配置文件类型
	viper.AddConfigPath("./config/") // 配置文件路径，可配置多个
	err := viper.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("初始化配置文件错误: %s\n", err.Error()))
	}
	// 监听配置文件变化
	viper.WatchConfig()
	// 当配置文件变化触发的方法
	viper.OnConfigChange(func(e fsnotify.Event) {
		fmt.Println("配置文件变化了:", e.Name)
	})
}

// 初始化etcd
func InitEtcd() {
	var err error
	EtcdCli, err = clientv3.New(clientv3.Config{
		Endpoints:   []string{"127.0.0.1:2379"},
		DialTimeout: 5 * time.Second,
	})
	if err != nil {
		fmt.Printf("connect to etcd failed, err: %s\n", err)
		return
	}
	fmt.Println("connect to etcd success")
}


